﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using QuanLyNganHangDe.DAL.Models;

namespace QuanLyNganHangDe.BLL
{
    class BizDotThi
    {
        internal static IList<DotThi> GetListDotThi(string maHocKy)
        {
            using (var context = QLNHD_KHContext.GetContext())
            {
                var lst = context.DotThiDbSet.Where(e => e.MaHocKy == maHocKy).ToList();
                return lst;
            }
        }

        internal static void Insert(DotThi dotThi)
        {
            using (var context = QLNHD_KHContext.GetContext())
            {
                // Kiểm tra chưa có tên đợt nào như vậy trong cùng học kỳ
                var oDotThi = context.DotThiDbSet.Where(e => e.MaHocKy == dotThi.MaHocKy && e.TenDotThi == dotThi.TenDotThi).FirstOrDefault();
                if (oDotThi != null)
                    throw new Exception("Đợt thi đã tồn tại trong học kỳ");
                context.DotThiDbSet.Add(dotThi);
                context.SaveChanges();
            }
        }

        internal static void Update(DotThi dotThi, string tenDotThi, DateTime ngayBatDauThi, string ghiChu)
        {
            using (var context = QLNHD_KHContext.GetContext())
            {
                var oDotThi = context.DotThiDbSet.Where(e => 
                    e.MaHocKy == dotThi.MaHocKy && 
                    e.MaDotThi != dotThi.MaDotThi && 
                    e.TenDotThi == tenDotThi).FirstOrDefault();
                if (oDotThi != null)
                    throw new Exception("Đợt thi đã tồn tại trong học kỳ");
                oDotThi = context.DotThiDbSet.Where(e => e.MaDotThi == dotThi.MaDotThi).FirstOrDefault();
                if (oDotThi == null)
                    throw new Exception("Đợt thi không còn tồn tại trên hệ thống");
                oDotThi.TenDotThi = tenDotThi;
                oDotThi.GhiChu = ghiChu;
                oDotThi.NgayBatDauThi = ngayBatDauThi;
                context.SaveChanges();
            }
        }

        internal static void Delete(DotThi dotThi)
        {
            using (var context = QLNHD_KHContext.GetContext())
            {
                var oDotThi = context.DotThiDbSet.Where(e => e.MaDotThi == dotThi.MaDotThi).FirstOrDefault();
                if (oDotThi == null)
                    throw new Exception("Đợt thi không còn tồn tại trên hệ thống");
                context.DotThiDbSet.Remove(oDotThi);
                context.SaveChanges();
            }
        }
    }
}
